home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 2007 December
/
PCWKCD1207B.iso
/
Blogowanie poza sfera
/
Flock 1.0 beta
/
flock-1.0RC3.en-US.win32.exe
/
flock
/
modules
/
FlockCryptoHash.jsm
< prev
next >
Wrap
Text File
|
2007-10-18
|
3KB
|
84 lines
/*
* BEGIN FLOCK GPL
*
* Copyright Flock Inc. 2005-2007
* http://flock.com
*
* This file may be used under the terms of of the
* GNU General Public License Version 2 or later (the "GPL"),
* http://www.gnu.org/licenses/gpl.html
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* END FLOCK GPL
*/
/**
* Convenience wrappers for JavaScript code to use nsICryptoHash
* functionality. They return the standard hex representation of
* the hashes.
*
* Import this module through
*
* Components.utils.import("resource:///modules/FlockCryptoHash.jsm");
*
* Common usage:
*
* var md5 = FlockCryptoHash.md5("thing to hash");
* var md5 = FlockCryptoHash.md5Stream(someInputStream);
*
* There are also SHA1 variants, and generic functions (hash and hashStream)
* which take an nsICryptoHash algorithm constant as their second parameter.
*/
const CC = Components.classes;
const CI = Components.interfaces;
const CR = Components.results;
var EXPORTED_SYMBOLS = ["FlockCryptoHash"];
var FlockCryptoHash = {
hashStream: function FlockCryptoHash_hashStream(aStream, aAlgorithm) {
var hasher = CC["@mozilla.org/security/hash;1"]
.createInstance(CI.nsICryptoHash);
hasher.init(aAlgorithm);
hasher.updateFromStream(aStream, aStream.available());
var hash = hasher.finish(false);
var ret = "";
for (var i = 0; i < hash.length; ++i) {
var hexChar = hash.charCodeAt(i).toString(16);
if (hexChar.length == 1) {
ret += "0";
}
ret += hexChar;
}
return ret;
},
hash: function FlockCryptoHash_hash(aString, aAlgorithm) {
var stream = CC["@mozilla.org/io/string-input-stream;1"]
.createInstance(CI.nsIStringInputStream);
stream.setData(aString, aString.length);
return this.hashStream(stream, aAlgorithm);
},
md5Stream: function FlockCryptoHash_md5Stream(aStream) {
return this.hashStream(aStream, CI.nsICryptoHash.MD5);
},
md5: function FlockCryptoHash_md5(aString) {
return this.hash(aString, CI.nsICryptoHash.MD5);
},
hexSHA1FromStream: function FlockCryptoHash_hexSHA1FromStream(aStream) {
return this.hashStream(aStream, CI.nsICryptoHash.SHA1);
},
sha1: function FlockCryptoHash_sha1(aString) {
return this.hash(aString, CI.nsICryptoHash.SHA1);
}
};